<?php
namespace Admin\Controller;
use Think\Controller;
/**
* TemplateController
*/
class TemplateController extends CommonController
{
	//删除配置文件内容
	public function delfields($fields,$fname){
		foreach($fields as $k=>$v){  
	        if($k == $fname){  
	            unset($fields[$k]);  
	        }
    	}
    	return $fields;
	}
	//模板列表
	public function index(){
		//pc端 title
		$pc_fields = include TMPL_PATH.'pc/default/' . 'config.php';
		$pc_fields = $pc_fields? : array();
		// //手机端 title
		$m_fields = include TMPL_PATH.'m/default/' . 'config.php';
		$m_fields = $m_fields? : array();
		$mod=D("Category");
		//pc端模板
		$files=$mod->pc_field();
		//手机端模板
		$mfiles=$mod->m_field();
		$this->assign('pc_fields',$pc_fields);
		$this->assign('m_fields',$m_fields);
		$this->assign('mfiles',$mfiles);
		$this->assign('files',$files);
		$this->display();
	}
	//编辑模板
	public function edit($flag=2,$fname = null ,$type=null,$add=null){
		$flag=$_GET['flag'];
		//添加文件前缀
		$flagarr= array(
				'1' => 'List_', 
				'2' => 'Show_', 
				'3' => 'Category_', 
				'4' => 'Page_', 
				'5' => 'Public_', 
				'6' => '', 
				);
		if($type==2){
			//获取手机模板文件存放路径
			$file_path = TMPL_PATH . 'm/default/';
			//获取手机配置文件存放路径
			$config_path = TMPL_PATH . 'm/default/'. 'config.php';
			$fields = include TMPL_PATH.'m/default/' . 'config.php';
			$fields = $fields? : array();
			$action="/admin/template/edit/type/2";
			
		}else{
			//获取pc模板文件存放路径
			$file_path = TMPL_PATH . 'pc/default/';
			//获取pc配置文件存放路径
			$config_path = TMPL_PATH . 'pc/default/'. 'config.php';
			$fields = include TMPL_PATH.'pc/default/' . 'config.php';
			$fields = $fields? : array();
			$action="/admin/template/edit";
			//判断模板选择添加模板类型 PC端
			
		}
		if (IS_POST) {
			//接收添加、编辑文件名
			$fname = I('fname', '', 'trim,htmlspecialchars');
			$content = I('content', '', '');
			$title = I('title', '', '');
			//接收原文件名
			$name = I('name', '', '');
			//判断添加其他模板的时候文件名是否合法
			if($flag==6){
				$fnames=rtrim($fname, '.html');
				if(!preg_match('/^[a-zA-Z0-9]+$/',$fnames)){
					alertMes('文件名只能有数字和字母组成');
				}
			}
			$fname =$flagarr["$flag"].ltrim($fname, './');
			if (empty($fname)) {
				alertMes('未指定文件名');
			}
			$html=substr($fname,(strlen($fname)-5));
			//判断文件后缀
			if($html !== '.html'){
				alertMes('模板文件名必须以.html结尾');
			}
			//判断是添加模板还是编辑模板
			if($add !== '1'){
				//拼接路径
				$truefile = $file_path . $name;
				//获取原文件名前缀 拼接修改后文件名
				if(strstr ($name,'_',true)){
					$fname=strstr ($name,'_',true)."_".$fname;
				}
				//拼接路径
				$upfile = $file_path . $fname;
				$rel=rename($truefile,$upfile);
				$fields=$this->delfields($fields,$name);
				$fields["$fname"]=$title;
				//定义配置文件是php格式
				$save_text="<?php"."\r\n"."return ".var_export($fields,true).";";
				//以数组方式写入文件
				file_put_contents($config_path, $save_text."\r\n");
				file_put_contents($upfile, $content);
				if(!$rel){
					alertMes('文件重命名失败');
				}
				alertMes('保存文件成功','/admin/template/index');
			}
			$fields["$fname"]=$title;
			//定义配置文件是php格式
			$save_text="<?php"."\r\n"."return ".var_export($fields,true).";";
			//以数组方式写入文件
			file_put_contents($config_path, $save_text."\r\n");
			$truefile = $file_path . $fname;
			if (false !== file_put_contents($truefile, $content)) {
				alertMes('保存文件成功','/admin/template/index');
			} else {
				alertMes('保存文件失败');
			}
		}else{
			//转换文件名
			$name = base64_decode($fname);
			//拼接路径
			$truefile = $file_path . $name;
			if (!file_exists($truefile)) {
				alertMes('文件不存在');
			}
			//读取文件内容
			$content = file_get_contents($truefile);
			if ($content === false) {
				alertMes('读取文件失败');
			}
			$title=$fields[$name];
			//文件名去前缀
			$fname=ltrim(strstr($name, "_"),'_')  ;
			$fname=$fname ? $fname : $name;
			if (empty($fname)) {
				alertMes('未指定要编辑的文件');
			}
			$content = htmlspecialchars($content);
			$this->assign('title', $title);
			$this->assign('fname', $fname);
			$this->assign('name', $name);
			$this->assign('action', $action);//分配提交方式
			$this->assign('content', $content);
			$this->display();
			}
	}

	//添加模板
	public function add($flag=null,$type=null){
		if($type==2){
			//判断模板选择添加模板类型 手机端
			$name="手机端模板添加";
			$action="/admin/template/edit/type/2/add/1/flag/{$flag}";
		}else{
			//判断模板选择添加模板类型 PC端
			$name="PC端模板添加";
			$action="/admin/template/edit/type/1/add/1/flag/{$flag}";
		}
		$voice="默认模板前缀：列表(List_)内容(show_)首页(Category_)单页(Page_)公共(Public_)其他(无)";
		//随机生成添加文件名
		$fname = uniqid() . '.html';
		$this->assign('name', $name);
		$this->assign('voice', $voice);
		$this->assign('action', $action);//分配提交方式
		$this->assign('fname', $fname);
		$this->display();
	}
	//删除模板
	public function del($type=null) {
		if($type==2){
			//获取手机模板文件存放路径
			$file_path = TMPL_PATH . 'm/default/';
			//获取手机配置文件存放路径
			$config_path = TMPL_PATH . 'm/default/'. 'config.php';
			$fields = include TMPL_PATH.'m/default/' . 'config.php';
			$fields = $fields? : array();
		}else{
			//获取pc模板文件存放路径
			$file_path = TMPL_PATH . 'pc/default/';
			//获取pc配置文件存放路径
			$config_path = TMPL_PATH . 'pc/default/'. 'config.php';
			$fields = include TMPL_PATH.'pc/default/' . 'config.php';
			$fields = $fields? : array();
		}
		$fname = I('fname', '', 'base64_decode');
		if (empty($fname)) {
			alertMes('参数错误');
		}
		//删除配置文件内容
		
		$fields=$this->delfields($fields,$fname);
		//定义配置文件是php格式
		$save_text="<?php"."\r\n"."return ".var_export($fields,true).";";
		//以数组方式写入文件
		$content = file_put_contents($config_path, $save_text."\r\n");
		if ($content === false) {
			alertMes('配置文件写入失败');
		}
		//拼接文件路径
		$truefile = $file_path . $fname;
		if (unlink($truefile)) {
			alertMes('删除文件成功','/admin/template/index');
		} else {
			alertMes('删除文件失败');
		}
	}
}